The code below assumes that a PrintJob is already open.
PEGetPrintOptions PESetPrintOptions
uses CRDelphi; var wStartPage, wStopPage, wCopies, wCollation : Word; sOutputFileName : string; procedure GetPrintOptions; var PrintOpt : PEPrintOptions; begin PrintOpt.StructSize := SizeOf(PEPrintOptions); if not PEGetPrintOptions(PrintJob, PrintOpt) then {Do Error Handler}; wStartPage := PrintOpt.StartPageN; wStopPage := PrintOpt.StopPageN; wCopies := PrintOpt.nReportCopies; wCollation := PrintOpt.Collation; sOutputFileName := StrPas(@PrintOpt.outputFileName); end; {The SetPrintOptions procedure takes a parameter "PromptForOptions" which shows how to use the Print Engine to prompt for PrintOptions} procedure SetPrintOptions(PromptForOptions: boolean); var PrintOpt : PEPrintOptions; pPrintOpt : ^PEPrintOptions; Changed : boolean; sTmp : string; begin PrintOpt.StructSize := SizeOf(PEPrintOptions); pPrintOpt := nil; Changed := False; if PromptForOptions = True then begin {By passing in a Nil pointer, the Print Engine will prompt for PrintOptions} if not PESetPrintOptions(PrintJob, PEPrintOptions(pPrintOpt^)) then {Do Error Handler}; Exit; end; {Get PrintOptions from Report} if not PEGetPrintOptions(PrintJob, PrintOpt) then {Do Error Handler}; {StartPage} if PrintOpt.StartPageN <> wStartPage then begin PrintOpt.StartPageN := wStartPage; Changed := True; end; {StopPage} if PrintOpt.StopPageN <> wStopPage then begin PrintOpt.StopPageN := wStopPage; Changed := True; end; {Copies} if PrintOpt.nReportCopies <> wCopies then begin PrintOpt.nReportCopies := wCopies; Changed := True; end; {Collation} if PrintOpt.Collation <> wCollation then begin PrintOpt.Collation := wCollation; Changed := True; end; {OutputFileName} sTmp := StrPas(@PrintOpt.outputFileName); if CompareText(sOutputFileName, sTmp) <> 0 then begin {OutputFileName cannot be larger than 512 characters} sTmp := Copy(sOutputFileName, 1, 512); StrPCopy(@PrintOpt.outputFileName, sTmp); Changed := True; end; {Send PrintOptions} if Changed then begin if not PESetPrintOptions(PrintJob, PrintOpt) then {Do Error Handler}; end; end;
Seagate Software IMG Holdings, Inc. http://www.seagatesoftware.com Support services: http://support.seagatesoftware.com |